package cn.design.realize;

/**
 * @author dlq
 * @description 具体享元类:
 *              继承抽象享元类，在具体享元类中为内部状态提供存储空间。通常可以结合单例模式来设计具体享元类，为每一个具体享元类提供唯一的享元对象
 *            私有属性为 type 内部状态： 享元对象内部不随外界对象改变而改变的共享部分
 *            operateLolHero方法参数 heroName 外部： 享元对象内部随外界对象改变而改变，不能够共享的状态就是外部状态
 *            type: 在lol应用联盟中 就是 几种 类型 ： 法师 、刺客 、坦克 、
 *            heroName: 具体英雄名称 就是属于上面的几种
 *            heroName: 就是一个 非分享具体享元类(UnshareConcreteFlyweight)
 * @date 2020/9/22 10:09
 * @since 1.0
 */
public class ConcreteFlyweight implements Flyweight{
    /**
     *
     */
    private String type;

    public ConcreteFlyweight(String type) {
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
    /**
     * @description 选择 LOL 英雄的一个方法
     * @param heroName
     * @return void
     * @author dlq
     * @date 2020/9/22 10:11
     */
    @Override
    public void choiceLolHero(String heroName) {
        System.out.printf("英雄 [%s] 属于 [%s]类型\n",heroName,type);
    }
}
